package com.huluobo.a2307douyindemo.demo.viewbinding

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.databinding.DataBindingUtil
import com.huluobo.a2307douyindemo.R
import com.huluobo.a2307douyindemo.databinding.ActivityViewBinding

/**
 *  ViewBinding总结
 *  1.首先使用时,需要在app的build.gradle中添加开关,    viewBinding {enable = true}
 *  2.开启后所有的xml中的布局文件都会对应的生成一个类,也就是由xml文件名生成的驼峰命名法的类,后边加上Binding
 *  3.setContentView binding.root 这个方法中不能直接使用layout的id,需要使用binding.root来指定布局 root(根) binding的根据簿
 *  4.binding的特点,具有空安全性,视图(view)绑定会对视图直接引用,不需要声明
 *  5.具有类型安全性,不需要进行指定类型或者强制转换,可以自动匹配xml中控件的类型,比如xml中是个textView,在kotlin引用的时候就是一个textView
 */
class ViewBindingActivity : AppCompatActivity() {
    lateinit var binding: ActivityViewBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        //binding赋值,需要通过当前activity的binding引入布局
        binding = ActivityViewBinding.inflate(layoutInflater)
        //设置布局为binding的根布局
        setContentView(binding.root)

        binding.tv.text = "这是一个文本"
        binding.et.hint = "这是一个输入框"
        binding.btn.setOnClickListener {
            Toast.makeText(this, "点击按钮", Toast.LENGTH_LONG).show()
        }

        //上传演示 测试2
    }
}